#include <iostream>

using std::cout;
using std::endl;

int func1()
{
    cout << "int func1()" << endl;
    return 10;
}

int func2()
{
    cout << "int func2()" << endl;
    return 20;
}

int func3(int x, int y)
{
    return x + y;
}

void test()
{
    func1();//直接调用func1
    typedef int A;
    /* typedef int (*)() pFunc;//error */
    //pFunc是一种类型，指向返回类型是int，参数是无参的这种
    //函数的类型
    typedef int (*pFunc)() ;//ok,C语言中的写法
    /* using pFunc = int (*)();//C++11 */

    //func1进行延迟调用(Linux、C++中的多态)
    pFunc f = func1;//注册回调函数
    //...其他业务逻辑
    //...
    //...
    cout << "f() = " << f() << endl;//执行回调函数

    pFunc f2 = &func2;
    cout << "f2() = " << f2() << endl;

    /* pFunc f3 = func3;//error */

}

int main(int argc, char *argv[])
{
    test();
    return 0;
}

